package org.lexicon.swpogo;


import java.net.URI;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.shared.PrefixMapping;
import com.hp.hpl.jena.rdf.model.Resource;
import java.util.List;


public interface SemWebPogo {

	public URI getUri();
	public void setUri(URI uri);
	public void setUri(String uri);
	
	public PrefixMapping getPrefixMapping();
	public void setPrefixMapping(PrefixMapping prefixMapping);
	public void addPrefixMapping(String namespace, String prefix);
	public void removePrefixMapping(String prefix);
	
	public Model marshall();
	public void unmarshall(Model model);

	public SparqlQueryBuilder getSparqlQueryBuilder();
	public void setSparqlQueryBuilder(SparqlQueryBuilder sparqlQueryBuilder);
	
	public Provenance getProvenance();
	public void setProvenance(Provenance provenance);
	
	public void setRdfModelMarshaller(RdfModelMarshaller rdfModelMarshaller);
	public RdfModelMarshaller getRdfModelMarshaller();
	
	public void addSimpleRdfPropertyBinding(String pogoProperty, String RdfProperty);
	public void addSimpleRdfPropertyBinding(String pogoProperty, String RdfProperty, String Namespace);
	
	public void addRdfPropertyBinding(RdfPropertyBinding rdfPropertyBinding);
	public void removeRdfPropertyBinding(String pogoProperty);
	public List<RdfPropertyBinding> getRdfPropertyBindings();
	
	public void addTypeBinding(Resource type);
	public void removeTypeBinding(Resource type);
	public List<Resource> getTypeBindings();
	public void addTypeBinding(String type);
	public void removeTypeBinding(String type);
	public void addTypeBinding(String type, String namespace);
	
	public URI createUri();
	
}
